Programming with Proofs: Language-Based Approaches to Totally Correct Software
نویسنده
چکیده
Tremendous progress has been made in automated and semi-automated verification since the seminal works on program verification. Automated deductive techniques like model checking have been highly successful for many verification tasks (e.g., [17, 18, 13]). Impressive advances continue to be made in static analysis, type systems, and static bug finding (e.g., [21, 12]). These approaches aim to verify code or find bugs in existing systems as automatically as possible, with as little developer help as possible. This has been the aim of the research community for many years, possibly due in part to the bad reputation that continues to plague full program verification. Theorem proving approaches to program verification have continued to make advances, but indeed, they still are generally applied only to the most critical applications (e.g., [7, 5, 16, 11]). Despite the continuing advances in fully automated verification, it seems unlikely that essentially automatic techniques will ever be able to scale to full program verification. Given steadily increasing societal reliance on software systems, totally correct code remains a vitally important goal. In this position paper, I advocate an approach to full program verification in which programmers write imperative programs and their computational proofs together as single artifacts (Section 3). Despite the reliance on manual creation of proofs, the approach I advocate is quite different from existing theorem-proving approaches, which I argue are unlikely ever to be feasible for mainstream use (Section 2). In Section 4, I show how the approach I advocate solves critical problems with theorem proving, and I compare the approach to other verification approaches.
منابع مشابه
Compiler Support for Correctness Proofs
The development of correct software is an important task which should not be carried out with the help of tools following diierent approaches. We propose that full support for correctness proofs should be integrated into the compiler. We outline in this paper how a compiler for a functional language can be extended to support the development of correct software. Speciications, functional progra...
متن کاملFormal certification of game-based cryptographic proofs. (Certification formelle de preuves cryptographiques basées sur les séquences de jeux)
The game-based approach is a popular methodology for structuring cryptographic proofs as sequences of games. Game-based proofs can be rigorously formalized by taking a code-centric view of games as probabilistic programs and relying on programming language techniques to justify proof steps. In this dissertation we present CertiCrypt, a framework that enables the machine-checked construction and...
متن کاملCombining Proofs and Programs
Programming languages based on dependent type theory promise two great advances: flexibility and security. With the type-level computation afforded by dependent types, algorithms can be more generic, as the type system can express flexible interfaces via programming. Likewise, type-level computation can also express data structure invariants, so that programs can be proved correct through type ...
متن کاملA Multi-Layer Architecture for Knowledge-Based System Synthesis
This paper deenes a clean multi-layer architecture for the design of knowledge-based synthesis systems within the logic programming paradigm. The intent is to provide an integrated logical framework for modeling the diierent kinds of knowledge involved during synthesis processes, a workbench of inference-based generic methods for the constructive solution of knowledge acquisition and synthesis ...
متن کاملTheorem proving via uniform proofs
Uniform proofs systems have recently been proposed [Mil91] as a proof-theoretic foundation and generalization of logic programming. In [Mom92a] an extension with constructive negation is presented preserving the nature of abstract logic programming language. Here we adapt this approach to provide a complete theorem proving technique for minimal, intuitionistic and classical logic, which is tota...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2005